Page({

   /**
    * 页面的初始数据
    */
   data: {
      cardData: [{
            name: '宫保鸡丁',
            open: false,
            id: 1,
            show: false
         },
         {
            name: '京酱肉丝',
            open: false,
            id: 1,
            show: false
         },
         {
            name: '番茄炒蛋',
            open: false,
            id: 1,
            show: false
         },
         {
            name: '水果沙拉',
            open: false,
            id: 1,
            show: false
         },
      ],
      currentN: "",
      type: 1,
      begin: false,
      rotate1: '',
      expan1: '',
   },
   getRecText() {
      wx.request({
         url: 'https://www.daizhongdai.xyz:3007/index/tj',
         success: res => {
            console.log(res.data.data.data);
            var d = res.data.data.data
            if (d.length < 4) {
               this.getRecText()
               return
            }
    
            var d2 = this.data.cardData
           var randomArr = this. newRandomNumbersWithNoRepeat(0,d.length-1,4)
            for (let i = 0; i < 4; i++) {
               console.log(randomArr[i]);
               wx.request({
                  url: 'https://www.daizhongdai.xyz:3007/classify?name=' + d[randomArr[i]].title,
                  success: res => {
                     console.log(res.data.data);
                     if (res.data.data.length != 0) {
                        d2[i].name = d[randomArr[i]].title
                        this.setData({
                           cardData: d2
                        })
                     } else {
                        //没有详情 继续随机
                        this.getRecText()
                     }
                  }
               })
            }

         }
      })
   },
    newRandomNumbersWithNoRepeat(start,end,size){  
      var para=new Array();//目标随机数组  
      var rnum;//当前随机数  
      var currentIndex=0;//当前随机数组的索引  
      if(start>end||start<0||end<0||size<0){  
          return;  
      }  
      if(end-start+1<size){//验证随机数个数是否超出随机数范围  
          return;  
      }  
      for(var i=0;i<size;i++){//生成 size 个不重复的随机数  
          rnum=Math.round(Math.random()*(end-start)+start);;//获取随机数  
          if(this.isHaveThisNumber(para,rnum)){//是否已经存在  
              while(this.isHaveThisNumber(para,rnum)){//获取新的随机数 直到不重复  
                  rnum=Math.round(Math.random()*(end-start)+start);//重新获取随机数  
              }  
          }  
          para[currentIndex++]=rnum;//添加到现有数字集合中  
      }  
      return para;  
  }  ,
   isHaveThisNumber(para,num){  
   //拒绝无效的数组  
   if(typeof(para) == "object")  
   {  
       if(para.length==0)  
       {  
           return false;  
       }  
   }  
   for(var i=0;i<para.length;i++){  
       if(para[i]==num){  
           return true;//与目标数组有重复  
       }  
   }  
   return false;  
} ,
   go: function (e) {
      console.log(e.currentTarget.dataset.type);
      var t = e.currentTarget.dataset.type
      if (t == 1) {
         var d = this.data.cardData
         for (var ii = 0; ii < d.length; ii++) {
            d[ii].id = 2
            d[ii].show = true
            var r1 = wx.createAnimation({
               duration: 2000,
               timingFunction: 'linear'
            })
            r1.rotateY(360).step()
            d[ii].rotate1 = r1.export()
         }
         this.shuffle(d)
         this.setData({
            cardData: d,
            begin: true
         })

      } else if (t == 2) {
         wx.navigateTo({
            url: '../dishDetails/dishDetails?name=' + this.data.currentN,
         })
      }
   },
   back: function () {

      var d = this.data.cardData
      for (var ii = 0; ii < d.length; ii++) {
         d[ii].id = 1
         d[ii].show = false
         var r1 = wx.createAnimation({
            duration: 2000,
            timingFunction: 'linear'
         })
         r1.rotateY(0).step()
         d[ii].rotate1 = r1.export()
      }
      this.setData({
         cardData: d,
         begin: false,
         type: 1,
         currentN: "",
      })
   },
   begin: function (e) {
      if (!this.data.begin) //还没开始不允许翻
         return
      console.log(e.currentTarget.dataset.i);
      var i = e.currentTarget.dataset.i
      var d = this.data.cardData
      var id = e.currentTarget.dataset.id
      var r1 = wx.createAnimation({
         duration: 2000,
         timingFunction: 'linear'
      })
      var r2 = wx.createAnimation({
         duration: 2000,
         timingFunction: 'linear'
      })
      // 点击正面

      if (id == 1) {
         // console.log('正面');
         // r1.rotateY(360).step()
         // d[i].rotate1 = r1.export()
         // this.setData({
         //    cardData: d
         // })
         // setTimeout(function () {
         //    d[i].id = 2
         //    d[i].show = true
         //    console.log("这里写结束处理程序!!") //官方写法就这样.暂时没有找到相关api.   
         //    this.setData({
         //       cardData: d
         //    })
         //    var e1 = wx.createAnimation({
         //       duration: 2000,
         //       timingFunction: 'linear'
         //    })
         //    e1.translate(100, 100).step()
         //    this.setData({
         //       expan1: e1.export()
         //    })
         // }.bind(this), 2000)
      }
      // 点击背面
      else {
         r2.rotateY(0).step()
         d[i].rotate1 = r2.export()
         this.setData({
            cardData: d
         })
         setTimeout(function () {
            d[i].id = 1
            d[i].show = false
            console.log("这里写结束处理程序!!" + d[i].name) //官方写法就这样.暂时没有找到相关api.   
            this.setData({
               cardData: d,
               type: 2,
               currentN: d[i].name,
            })

         }.bind(this), 2000)
      }

   },
   shuffle(arr) {
      let i = arr.length;
      while (i) {
         let j = Math.floor(Math.random() * i--);
         [arr[j], arr[i]] = [arr[i], arr[j]];
      }
      return arr;
   },
   /**
    * 生命周期函数--监听页面加载
    */
   onLoad: function (options) {},

   /**
    * 生命周期函数--监听页面初次渲染完成
    */
   onReady: function () {

   },

   /**
    * 生命周期函数--监听页面显示
    */
   onShow: function () {
      this.getRecText()
   },

   /**
    * 生命周期函数--监听页面隐藏
    */
   onHide: function () {
      this.back()
      this.getRecText()
   },

   /**
    * 生命周期函数--监听页面卸载
    */
   onUnload: function () {

   },

   /**
    * 页面相关事件处理函数--监听用户下拉动作
    */
   onPullDownRefresh: function () {

   },

   /**
    * 页面上拉触底事件的处理函数
    */
   onReachBottom: function () {

   },

   /**
    * 用户点击右上角分享
    */
   onShareAppMessage: function () {

   }
})